package com.xueqiu.movieplaymanagersystem.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.xueqiu.movieplaymanagersystem.utils.sensitiveUtils.SensitiveFilter;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.Objects;

/**
 * @author xueqiu
 */
@Configuration
public class SensitiveConfig {
    /**
     * 创建一个SensitiveFilter对象，并将其注册为一个Bean，
     * 并且该类构造方法中传入一个包含敏感词的txt文件，用于读取敏感词列表
     * @return SensitiveFilter对象
     */
    @Bean
    public SensitiveFilter getBean() {
        return new SensitiveFilter(
                //BufferedReader是用于从字符输入流中读取文本并缓冲字符的类
                new BufferedReader(
                        //InputStreamReader是用于将字节流转换为字符流的类
                        new InputStreamReader(
                                //Objects.requireNonNull() 用于判断 getResourceAsStream() 方法返回的值是否为 null，如果为 null 则抛出 NullPointerException 异常，否则直接返回输入流
                                Objects.requireNonNull(
                                        //通过类加载器加载了一个默认在resources根目录中的资源文件sensitive_words.txt并转换为了InputStream对象
                                        SensitiveConfig.class
                                                .getClassLoader()
                                                .getResourceAsStream("sensitive_words.txt")
                                ),
                                //使用StandardCharsets.UTF_8编码方式，将InputStreamReader转换为字符缓冲流BufferedReader并作为参数给SensitiveFilter对象构造方法
                                StandardCharsets.UTF_8
                        )
                )
        );
    }
}
